Stable Abstractions Principle
https://wiki.c2.com/?StableAbstractionsPrinciple
Packages that are maximally stable should be maximally abstract. Unstable packages should be concrete. The abstractness of a package should be in proportion to its stability.